package com.tgy.heap;

/**
 * @Author: tgy
 * @Date: 2020-10-10 10:24
 */
public interface Heap<E> {

    /**
     *
     * 元素的数量
     */
    int size();
    /**
     *
     * 是否为空
     */
    boolean isEmpty();

    void clear();

    /**
     *  添加元素
     * @param element
     */
    void add(E element);

    /**
     * 获得堆顶元素
     * @return 返回堆顶部元素
     */
    E get();

    /**
     *  删除堆顶元素
     * @return
     */
    E remove();

    /**
     * 删除堆顶元素的同时插入一个新元素
     * @param element
     * @return
     */
    E replace(E element);

    void tranversal(Visitor<E> visitor);
}
